<?php

include_once("library/facil3/navigation/http/HttpResult.class.php");

//include_once("library/forum/modules/contact/dao/ContactDAO.class.php");
//include_once("library/forum/modules/contact/vo/ContactVO.class.php");

include_once("facil3/core/controller/interface/HTTPControllerInterface.class.php");
include_once(DataHandler::removeDobleBars(Config::getFolderView("HttpRoot.class.php")));

include_once "library/facil3/core/controller/mail/MailInfoPostVO.php" ;
//para retorno do envio e cadasro de mail
include_once "library/facil3/core/vo/ReturnResultVO.class.php";
include_once("library/jogando/modules/jogo/dao/JogoDAO.class.php");
include_once("library/facil3/core/modules/category/dao/CategoryDAO.class.php");

/**
 * @author Renato
 * @date		: 13/02/2012
 * @version		: 1.0
 * @desc		: Jogos por estilo, deve listar as categorias para o usuario escolher e filtrar
 */
 
class Estilos implements HTTPControllerInterface  {
	//configurações e dados a serem a serem enviados no email
	public $MailInfoPost;
	
	public $arrayVariable;
	public $arrayRestFolder;
	
	public function __construct($arrayRestFolder = NULL){
		if($arrayRestFolder != NULL){
			$this->arrayVariable   = Navigation::getVariableArraySlug($arrayRestFolder);
            $this->arrayRestFolder = $arrayRestFolder;
        }
	}
	/**
	 * Retorna a lista de categorias com 3 jogos randomicos no parametro ->jogos
	 * 
	 */
	public function init(){
		$CategoryDAO = new CategoryDAO();
		$ResultDAO = $CategoryDAO->select(CategoryDAO::RETURN_STD_OBJECT, NULL, 1);
		//pega 3 jogos random para cada categoria
		$JogoDAO = JogoDAO::getInstance();
		if($ResultDAO->success){
			foreach($ResultDAO->result as $cat){
				$ReturnRestulJogo = $this->getRandomJogos(3, $cat->id);
				$cat->jogos = array();
				$cat->total_jogos = 0;
				if($ReturnRestulJogo->success){
					$cat->jogos = $ReturnRestulJogo->result;
					$cat->total_jogos = $ReturnRestulJogo->count_total;
				}
			}
		}
		$returnResult = new HttpResult();
		//iniciando o resultado para o html
		$retornoDaPaginaHTML = new HttpRoot();
		$retornoDaPaginaHTML->categorias = $ResultDAO->result;
		$RandomResult = $this->getRandomJogos(10);
		$retornoDaPaginaHTML->array_random = $RandomResult->result;
		$returnResult->setHttpContentResult($retornoDaPaginaHTML);
		//Debug::print_r($returnResult);
		return $returnResult;
	}
	private function getRandomJogos($quant, $category_id = NULL){
		$JogoDAO = JogoDAO::getInstance();
		$ReturnRestulJogo = $JogoDAO->select(
								$typeOfReturn = JogoDAO::RETURN_STD_OBJECT, 
								$id = NULL, 
								$active = 1, 
								$category_id,
								$name = NULL, 
								$ranking = NULL, 
								$order_type = JogoDAO::ORDER_RAND,						
								$quant_limit = $quant, 
								$quant_started = 1
							);
		return $ReturnRestulJogo;
	}
    /**
     * exibe os estilos e link para os jogos filtrados
     */
    public function show($categoria_id = NULL){
		//inicia a array final da categoria pai
    	$StdCategoryVO 			= array();
    	$JogoDAO = JogoDAO::getInstance();
    	$page = DataHandler::forceInt(DataHandler::getValueByArrayIndex($this->arrayVariable, "pag"));
    	$page = ($page >= 1)?$page:1;
    	$ResultDAO = $JogoDAO->select(JogoDAO::RETURN_STD_OBJECT, NULL, 1, 
								$category_id = $categoria_id,
								$name = NULL, 
								$ranking = NULL, 
								$order_type = "ranking",						
								$quant_limit = 30, 
								$quant_started = ($page-1)*30);
		
    	//iniciando o retorno padrao em http result
		$returnResult = new HttpResult();
		//iniciando o resultado para o html
		$retornoDaPaginaHTML = new HttpRoot();
		$ResultRandom = $this->getRandomJogos(10);
		$retornoDaPaginaHTML->array_random = $ResultRandom->result;
		$retornoDaPaginaHTML->lista_ordenada = $ResultDAO->result;
		$retornoDaPaginaHTML->count_total 	= $ResultDAO->count_total;
		$retornoDaPaginaHTML->total_pages 	= floor($ResultDAO->count_total/30)+1;
		$retornoDaPaginaHTML->this_page 	= $page;
		
		$returnResult->setHttpContentResult($retornoDaPaginaHTML);
		//Debug::print_r($returnResult);
		return $returnResult;
    }
    /**
     * filtra pelo id de estilo enviado
     */
    public function estilo(){
    	$id = DataHandler::forceInt(DataHandler::getValueByArrayIndex($this->arrayVariable, "id"));
		if($id > 0){
			$Retorno = $this->show($id);
			$Content = $Retorno->getHttpContentResult();
			//pegando o nome do estilo pelo id
			$CategoryVO = new CategoryVO();
			$CategoryVO->setId($id, TRUE);
			
			$Content->estilo = $CategoryVO->getName();
			
			return $Retorno;
		} else {
			//sem id enviado
			Navigation::redirect("estilos/jogos_por_categorias/");
		}
    }
}